import { enableProdMode, ViewEncapsulation } from '@angular/core';
import { platformBrowserDynamic }            from '@angular/platform-browser-dynamic';

import { AppModule }   from './app/app.module';
import { environment } from '@env/environment';

import { preloaderFinished } from '@delon/theme';
import { hmrBootstrap }      from './hmr';

preloaderFinished();

if ( environment.production )
{
    enableProdMode();
    window.console.log = function () {};
    window.console.info = function () {};
    window.console.warn = function () {};
    window.console.error = function () {}
}

const bootstrap = () =>
{
    return platformBrowserDynamic()
        .bootstrapModule(AppModule, {
            defaultEncapsulation: ViewEncapsulation.Emulated,
        })
        .then(res =>
        {
            if ( (window as any).appBootstrap )
            {
                (window as any).appBootstrap();
            }
            return res;
        });
};

if ( environment.hmr )
{
    // tslint:disable-next-line: no-string-literal
    if ( module['hot'] )
    {
        hmrBootstrap(module, bootstrap);
    }
    else
    {
        console.error('HMR is not enabled for webpack-dev-server!');
        console.log('Are you using the --hmr flag for ng serve?');
    }
}
else
{
    bootstrap();
}
